package com.pzsh.service;


import com.pzsh.entity.CensusEntity;
import com.pzsh.entity.GoodsEntity;
import com.pzsh.entity.GoodsRotationEntity;
import com.pzsh.entity.GradeEntity;
import com.pzsh.entity.vo.*;
import com.pzsh.entity.vo.admin.AdminCensusVo;
import com.pzsh.entity.vo.admin.AdminGoodsVo;
import com.pzsh.entity.vo.admin.AdminGradeVo;

import java.util.List;

/**
 * @Description: 商品相关服务
 * @Param:
 * @return:
 * @Author: gxl
 * @Date: 2019/12/06
 */
public interface IGoodsService {


    /**
     *
     *查询升级产品列表
     * @return
     */
    List<GradeVo> findGradeList();

    /**
     * 查询商品列表
     * @return
     */
    List<GoodsVo> findGoodsList();

    /**
     * 获取商品详情
     * @return
     */
    GoodsVo getGoodsInfo(Integer goodsId);

    /**
     * 获取升级产品详情
     * @return
     */
    GradeVo getGradeInfo(Integer gradeId);

    /**
     *
     * 购买升级套餐产品
     * @param account
     * @param goodsId
     * @param numb
     * @param receiver
     * @param mobile
     * @param city
     * @param address
     */
    void buyGrade(String account, Integer goodsId, Integer numb, String receiver, String mobile, String city, String address);

    /**
     *
     * 购买商品
     * @param account
     * @param goodsId
     * @param numb
     * @param receiver
     * @param mobile
     * @param city
     * @param address
     */
    void buyGoods(String account, Integer goodsId, Integer numb, String receiver, String mobile, String city, String address);

    /**
     * 获取商品购买确认数据
     * @param account
     * @param goodsId
     * @param numb
     * @param receiver
     * @param mobile
     * @param city
     * @param address
     * @return
     */
    OrderVo confirmOrderGoods(String account, Integer goodsId, Integer numb, String receiver, String mobile, String city, String address);

    /**
     * 获取升级产品购买确认数据
     * @param account
     * @param gradeId
     * @return
     */
    OrderVo confirmOrderGrade(String account, Integer gradeId, String receiver, String mobile, String city, String address);

    /**
     * 获取商品图文详情
     * @param goodsId
     * @return
     */
    List<GoodsInfoVo> getInfoById(Integer goodsId);

    /**
     * 获取商品轮播图片
     * @param goodsId
     * @return
     */
    List<GoodsRotaionVo> getRotaionById(Integer goodsId);

    /**
     * 交易明细列表
     * @param account
     * @param type
     * @param pageSize
     * @param rowSize
     * @return
     */
    List<TransactionVo> tranRecord(String account, Integer type, Integer pageSize, Integer rowSize);

    /**
     * 管理台 获取商品列表
     *
     * @param pageSize
     * @param rows
     * @return
     */
    List<AdminGoodsVo> selectByRowBounds(Integer pageSize, Integer rows);

    /**
     * 管理台 更新报单商品
     * @param goodsId
     * @param goodsName
     * @param price
     * @param disPrice
     * @param rewardPs
     * @param returnDays
     * @param mainPicture
     * @param content
     */
    void updateGoods(Integer goodsId, String goodsName,Integer price, Integer disPrice, Integer rewardPs, Integer returnDays, String mainPicture,String mainPicture1,String mainPicture2, String content);

    /**
     * 管理台 获取首页轮播图
     * @return
     */
    List<GoodsRotaionVo> getIndexRotaion();

    /**
     * 管理台 查询复消商品
     * @param pageSize
     * @param rows
     * @return
     */
    List<AdminGradeVo> selectByRowBoundsOfGrade(Integer pageSize, Integer rows);

    /**
     * 管理台 更新复消商品
     * @param gradeId
     * @param gradeName
     * @param price
     * @param disPrice
     * @param givePs
     * @param reConsumption
     * @param team
     * @param fromGrade
     * @param toGrade
     * @param recommend
     * @param mainPicture
     * @param content
     */
    void updateGrade(Integer gradeId, String gradeName, Integer price, Integer disPrice, Integer givePs, Integer reConsumption, Integer team, Integer fromGrade, Integer toGrade, Integer recommend, String mainPicture,String mainPicture1,String mainPicture2, String content);

    /**
     * 添加 复消商品
     * @param gradeName
     * @param price
     * @param disPrice
     * @param givePs
     * @param reConsumption
     * @param team
     * @param fromGrade
     * @param toGrade
     * @param recommend
     * @param mainPicture
     * @param content
     */
    void insertGrade(String gradeName, Integer price, Integer disPrice, Integer givePs, Integer reConsumption, Integer team, Integer fromGrade, Integer toGrade, Integer recommend, String mainPicture,  String mainPicture1, String mainPicture2,String content);

    /**
     * 添加 报单商品
     * @param goodsName
     * @param price
     * @param disPrice
     * @param rewardPs
     * @param returnDays
     * @param mainPicture1
     * @param mainPicture
     * @param content
     */
    void insertGoods(String goodsName, Integer price, Integer disPrice, Integer rewardPs, Integer returnDays, String mainPicture, String mainPicture1, String mainPicture2, String content);

    /**
     * 删除报单商品
     * @param goodsId
     */
    void delGoods(Integer goodsId);

    /**
     * 删除复消商品
     * @param gradeId
     */
    void delGrade(Integer gradeId);

    /**
     * 确认收货
     * @param orderId
     */
    void OrderReceiver(Integer orderId);

    /**
     * 获取复消产品总数
     * @return
     */
    int getGrageCount();

    /**
     * 获取普通商品总数
     * @return
     */
    int getGoodsCount();

    /**
     * 更新轮播图
     * @param filePath
     */
    void updateRoation(String filePath);

    /**
     * 清除轮播图 所有
     */
    void delRoation();

    /**
     * 获取所有轮播图
     * @return
     */
    List<GoodsRotationEntity> rotationList();

    /**
     * 获取统计数据
     * @return
     */
    AdminCensusVo getCensus();

    /**
     * 更新订单收货地址
     * @param orderId
     * @param address
     * @param consignee
     * @param consigneeMobile
     */
    void updateOrder(Integer orderId, String address, String consignee, String consigneeMobile);

    /**
     * 取消订单
     * @param orderId
     */
    void cancelOrder(Integer orderId);
}
